﻿/*********************************************************
 * Form Khởi tạo của chương trình
 * khởi tạo kích thước và tọa độ ban đầu cho quân Mã
 * ******************************************************/

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Ma_Di_Tuan.Properties;

namespace Ma_Di_Tuan
{
    public partial class fInit : Form
    {
        public fInit()
        {
            InitializeComponent();

            this.BackgroundImage        = global::Ma_Di_Tuan.Properties.Resources.bamboo_back;
            this.BackgroundImageLayout  = ImageLayout.Stretch;
            this.Icon = global::Ma_Di_Tuan.Properties.Resources.horse;
        }

        //check valid value
        public void CheckValidValue()
        {
            if (int.Parse(tSize.Text) <= 5 || int.Parse(tSize.Text) > 50)
            {
                MessageBox.Show("Nhập kích thước bàn cờ trong khoảng từ 6 đến 50",
                                "Lỗi",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error,
                                MessageBoxDefaultButton.Button1);

                tSize.Focus();
            }
            else
            {
                //Giá trị nhập là số chẵn
                if (int.Parse(tSize.Text) % 2 != 0)
                {
                    MessageBox.Show("Nhập kích thước là số chẵn",
                                    "Lỗi",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Error,
                                    MessageBoxDefaultButton.Button1);

                    tSize.Focus();
                }
                else
                {
                    if (int.Parse(tX.Text) <= 0 || int.Parse(tX.Text) > int.Parse(tSize.Text))
                    {
                        MessageBox.Show("Nhập tọa độ X lớn hơn hoặc bằng 1 và nhỏ hơn hoặc bằng " + this.tSize.Text,
                                        "Lỗi",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Error,
                                        MessageBoxDefaultButton.Button1);

                        tX.Focus();
                    }
                    else
                    {
                        if (int.Parse(tY.Text) <= 0 || int.Parse(tY.Text) > int.Parse(tSize.Text))
                        {
                            MessageBox.Show("Nhập tọa độ Y lớn hơn hoặc bằng 1 và nhỏ hơn hoặc bằng " + this.tSize.Text,
                                            "Lỗi",
                                            MessageBoxButtons.OK,
                                            MessageBoxIcon.Error,
                                            MessageBoxDefaultButton.Button1);

                            tY.Focus();
                        }
                        else
                        {
                            //Nếu giá trị nhập vào hợp lệ
                            Main frmMain = new Main();

                            frmMain.SetInitValue(int.Parse(tX.Text), int.Parse(tY.Text), int.Parse(tSize.Text));
                            frmMain.Init();
                            this.Hide();
                            frmMain.Show();
                        }
                    }
                }
            }
        }

        private void bOk_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;

            CheckValidValue();
            this.Cursor = Cursors.Default;
        }

        private void bCancel_Click(object sender, EventArgs e)
        {         
            Application.Exit();
        }

        private void fInit_Load(object sender, EventArgs e)
        {
            if (tSize.Text == "" || tX.Text == "" || tY.Text == "")
                bOK.Enabled = false;
            else
                bOK.Enabled = true;

            this.Focus();
            this.tSize.Focus();
        }

        private void tSize_TextChanged(object sender, EventArgs e)
        {
            if (tSize.Text != "" && tX.Text != "" && tY.Text != "")
                bOK.Enabled = true;
            else
                bOK.Enabled = false;
        }

        private void tX_TextChanged(object sender, EventArgs e)
        {
            tSize_TextChanged(sender, e);
        }

        private void tY_TextChanged(object sender, EventArgs e)
        {
            tSize_TextChanged(sender, e);
        }

        //check is number
        private void tSize_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        private void tX_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        private void tY_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar))
                e.Handled = true;
        }
    }
}
